<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
       // 立即执行函数本身不会占用内存，相当于是语句 
        // 立即执行函数，执行完立即释放空间
        // 针对初始化功能的函数
        // 除了执行完立即被释放，别的和普通函数没有任何区别
        // 一般使用匿名函数

    //    var num = (function abc(a, b, c) {

    //         var a = 123;
    //         var b = 234;
    //         console.log(a + b + c);
    //        // return a;

    //     }(1, 2, 3))

    //     console.log(num);
    //     console.log(abc); 
    


        /*两种写法*/

        // (function() {}())  W3C建议的

        // (function() {})()

       // 只有表达式才能被执行符号执行

        // function test () {
        //     var a = 123;
        // }()   // 函数声明不能被执行,会解析成函数声明后面加一对括号，一对括号报错了


        //  ; //只写一个分号不报错

        // var test = function() {
        //     console.log('a');
        //     return 1;
        // }();
        // 和立即执行函数差不多，执行后test为函数返回值undefined / 1   

       - function test () {
             console.log('b');
        }();   
        // + ！都可以执行，为立即执行函数的返回值取负





        // function test(a, b, c, d) {
        //     console.log(a + b + c + d);
        // }
        
        // (1, 2, 3, 4);
        // 不报错，也不执行 相当于拆开来写

    </script>
</body>

</html>